package com.yesep.learn.jwt.common;

import java.io.Serializable;

import lombok.Data;

/**
 * 操作消息提醒
 */
@Data
public class R<T> implements Serializable {
	private static final long serialVersionUID = 1L;
	private Long timestamp = System.currentTimeMillis();// 时间戳
	private Integer status;// 状态码（尽量和HttpStatus一至）
	private String message;// 消息
	private T payload;// 数据负载

	/**
	 * 创建VO对象
	 * 
	 * @param code
	 *            错误码
	 * @param msg
	 *            内容
	 * @return 错误消息
	 */
	public static <T> R<T> me(int status, String msg) {
		R<T> vo = new R<>();
		vo.setStatus(status);
		vo.setMessage(msg);
		return vo;
	}

	/**
	 * 返回错误消息
	 * 
	 * @return 错误消息
	 */
	public static <T> R<T> error() {
		return error("操作失败");
	}

	/**
	 * 返回错误消息
	 * 
	 * @param msg
	 *            内容
	 * @return 错误消息
	 */
	public static <T> R<T> error(String msg) {
		return me(500, msg);
	}

	/**
	 * 返回成功消息
	 * 
	 * @param msg
	 *            内容
	 * @return 成功消息
	 */
	public static <T> R<T> success(String msg) {
		return me(200, msg);
	}

	/**
	 * 返回成功消息
	 * 
	 * @return 成功消息
	 */
	public static <T> R<T> success() {
		return success("操作成功");
	}

}
